package com.study.d2_lambda;

import com.study.d1_arrays.Student;

import java.util.Arrays;
import java.util.Comparator;

public class Test2 {
    public static void main(String[] args) {
        //给存储对象的数组进行排序
        Student[] students = new Student[4];
        students[0]=new Student("一帆风顺",175,'男',20);
        students[1]=new Student("二话不说",165,'男',130);
        students[2]=new Student("三心二意",170,'女',220);
        students[3]=new Student("四面八方",185,'女',10);
//        Arrays.sort(students);
//        System.out.println(Arrays.toString(students));
        //自定义比较规则1：让对象所在的类实现比较规则Comparable，重写compareTo方法，来指定比较规则
//        Arrays.sort(students);
//        System.out.println(Arrays.toString(students));
        //自定义比较规则2：sort存在重载的方法，支持自带Comparator比较器对象来直接指定比较规则(优先)
 /*       Arrays.sort(students, (Student o1, Student o2)-> {
                return o2.getAge()-o1.getAge();
        });*/
        //lambda进一步简化写法
        //参数类型可以省略不写
        //如果只有一个参数，参数类型可以省略，同时()也可以省略
        //如果lambda表达式中的方法体代码只有一行，可以省略大括号不写，同时要省略分号！如果这行代码是return语句，也必须去掉return不写
        Arrays.sort(students, (o1, o2)-> o2.getAge()-o1.getAge());

        System.out.println(Arrays.toString(students));
    }
}
